Generally, users of computing systems have a need to store data, applications, and so forth. Typically, the data, applications, and so on, may be stored on a storage device, which may be located local to the user, remotely located from the user, or a combination thereof.
An important feature of a storage system may be an ability to take a snapshot of a storage device's state (or a portion of the storage device's state) at a specified point in time and create a new storage volume from the snapshot. The snapshot may allow users to revert to an earlier state without requiring a lot of work.
As an example, consider a user operating a virtual machine in a cloud computing environment. The user may have a need to create and maintain disk volumes, effectively virtual block devices. To the virtual machine, the disk volume may appear as a local device, such as a disk drive, but may be stored on at a number of locations within the cloud computing infrastructure. The user may have a need to create and delete volumes, attach and detach them to virtual machines, create snapshots, and create new volumes from such a snapshot.
A prior art technique of creating a snapshot of a disk volume involves making a protected copy of the disk volume, for example, to another disk drive or to a remote storage device, and allowing the user access (e.g., read and/or write) to the disk volume. However, if the disk volume is large, making a copy of the disk volume may take a long time and may require the transfer of a large amount of information and a lot of processing.
Therefore, there is a need to be able to create snapshots of disk volumes with minimum processing and data transfer.